Wilson@思源

目 录

widget query使用文档

简体中文 | English

widget-query

一个将思源笔记数据库查询结果以表格样式渲染的挂件
现已上架思源笔记社区集市, 如果您喜欢本挂件, 欢迎为本项目点亮一个⭐!
思源数据库表与字段详情请见: 思源数据库表与字段 · 语雀

预览

https://github.com/Zuoqiu-Yingyi/widget-query/blob/main/preview.png
背景颜色状态指示:
白色:
初始化
正在处理查询
绿色
查询成功
蓝色
请继续操作
黄色
查询结果为空
红色
SQL 语句错误
未知错误

功能

1.
点选自动查询复选框, 下次打开该页面时自动进行一次查询
2.
为挂件块设置自定义属性 input​ 可以指定某个代码块或嵌入块中的 SQL 语句作为查询语句
例如在其他文档中有一个代码块或嵌入块 ID 为 20220418210605-ibussa1​, 那么为挂件块设置自定义块属性 input​: 20220418210605-ibussa1​ 可以引用该块的 SQL 语句进行查询
只有挂件块前一个块不是具有自定义属性 type​: query-code​ 的代码块时才会触发
3.
为挂件块设置自定义属性 output​ 可以指定某个表格块作为查询结果展示块
例如在其他文档中有一个表格块 ID 为 20220604112815-sfiwyi7​, 那么为挂件块设置自定义块属性 output​: 20220604112815-sfiwyi7​ 可以将查询结果渲染到该表格中
只有挂件块后一个块不是具有自定义属性 type​: query-table​ 的表格块时才会触发
4.
符合正则表达式 ^\s*SELECT\s+\*\s+FROM\s+blocks\s+.*​ 的 SQL 语句将启用默认块查询模式
该正则表达式在 /src/script/module/config.js​ 文件中 config.query.regs.blocks​ 定义
示例: SELECT * FROM blocks WHERE content LIKE '%内容块%'
该模式下, 查询结果渲染样式将以如下配置选项进行控制
5.
不符合默认块查询模式​的查询均为普通查询模式
示例
查询帮助文档 请从这里开始​ 及其下级所有的文档
sql
SELECT '[' || b.content || '](siyuan://blocks/' || b.id || ')' AS __1____pre__文档标题, b.hpath AS __2__文档路径 FROM blocks AS b WHERE b.type = 'd' AND b.hpath LIKE '%请从这里开始%' ORDER BY b.path LIMIT 10
查询思源数据库所有表
sql
SELECT * FROM sqlite_master
查询思源数据库 blocks​ 表中所有字段
sql
PRAGMA table_info('blocks')
自定义属性视图
sql
SELECT '[' || b.content || '](siyuan://blocks/' || a.block_id || ')' AS __1____pre__文档标题, MAX( CASE WHEN a.name = 'name' THEN a.value ELSE NULL END ) AS __2____kbd__命名, MAX( CASE WHEN a.name = 'alias' THEN REPLACE( '' || a.value || '', ',', '
' ) ELSE NULL END ) AS __3____pre__别名, MAX( CASE WHEN a.name = 'memo' THEN REPLACE( '' || a.value || '', ',', '
' ) ELSE NULL END ) AS __3____pre__备注 FROM attributes AS a INNER JOIN blocks AS b ON a.block_id = b.id WHERE ( a.name = 'name' OR a.name = 'alias' OR a.name = 'memo' ) AND b.type = 'd' GROUP BY a.block_id ORDER BY RANDOM() LIMIT 10;
使用字段别名前缀定义查询显示样式
__hidden__别名0​:
该字段不显示在查询结果中
__ref__别名1​:
该字段渲染为块引用
示例: ((<value> "<value>"))
__link__别名2​:
该字段渲染为块链接
示例: [<value>](siyuan://blocks/<value>)
__raw__别名3​:
该字段渲染为原始值(行内代码样式)
示例: <value>
__date__别名4​:
该字段渲染为日期
示例: yyyy-MM-dd
__time__别名5​:
该字段渲染为时间
示例: HH:mm:ss
__datetime__别名6​:
该字段渲染为日期时间
示例: yyyy-MM-dd HH:mm:ss
__s__别名7​:
该字段渲染为删除线
示例: ~~<value>~~
__u__别名8​:
该字段渲染为下划线
示例: <u><value></u>
__em__别名9​:
该字段渲染为斜体
示例: *<value>*
__tag__别名10​:
该字段渲染为标签
示例: <kbd><value></kbd>
__kbd__别名11​:
该字段渲染为按键样式
示例: ~<value>~
__sub__别名12​:
该字段渲染为下标样式
示例: ^<value>^
__sup__别名13​:
该字段渲染为上标样式
示例: #<value>#
__code__别名14​:
该字段渲染为行内代码
示例: <value>
__mark__别名15​:
该字段渲染为标记
示例: ==<value>==
__math__别名16​:
该字段渲染为公式
示例: $<value>$
__strong__别名17​:
该字段渲染为粗体
示例: **<value>**
__pre__别名18​:
该字段渲染为预览(渲染 markdown 行级标识符)
示例: <value>
使用字段别名前缀定义查询结果字段顺序
__<数字>__别名8​:
该字段可以放置在查询样式前缀字段的前面
示例:
__1____pre__别名9
__02____raw__别名10
默认显示查询结果原始值(使用行内代码)
字段别名前缀示例
sql
SELECT b.id AS __00____ref__ref, b.id AS __01____link__link, b.id AS __02____pre__pre, b.id AS __03____raw__raw, b.created AS __04____date__date, b.created AS __05____time__time, b.created AS __06____datetime__datetime, b.id AS __07____s__s, b.id AS __08____u__u, b.id AS __09____em__em, b.id AS __10____tag__tag, b.id AS __11____kbd__kbd, b.id AS __12____sub__sub, b.id AS __13____sup__sup, b.id AS __14____code__code, b.id AS __15____mark__mark, b.id AS __16____math__math, b.id AS __17____strong__strong FROM blocks AS b WHERE id = '.root{.id}'
6.
部分模板字段解析支持
.<prefix>{.<field>}
<prefix>​: 前缀字段
block​: 挂件块
parent​: 挂件块的上级块
root​: 挂件块所在文档块
<field>​: 属性字段
数据库中 blocks​ 表的字段名, 详情请参考 blocks
示例: SELECT * FROM blocks WHERE id = '.root{.id}' content LIKE '%内容块%'
等价于 SELECT * FROM blocks WHERE id = '.block{.root_id}' content LIKE '%内容块%'
查询挂件所在文档中所有含有 内容块​ 三个字的块

自定义配置

全局自定义配置

1.
创建文件 <工作空间>/data/widgets/custom.js
2.
在文件 <工作空间>/data/widgets/custom.js​ 中定义的值将覆盖 <工作空间>/data/widgets/Query/src/script/module/config.js​ 中对应的值

配置示例

js
/** * 文件路径 * <工作空间>/data/widgets/custom.js * 示例功能 | Example function: * 默认块查询结果中将块属性分列显示 */ export const config = { query: { render: { ial: { shape: 'columns', }, }, }, };
更多配置项请参考 config.js

块自定义配置

在挂件块(笔记中的Query按钮)中设置自定义块属性
自定义属性名称为 src/script/module/config.js​ 文件中 config​ 对象中的属性
例如, 如果想要自定义查询结果字段列表, 可以设置自定义块属性 query-fields​: ["hpath", "type", "markdown"]​, 在该块中将会替换 config.query.fields​ 字段

开始

该挂件已在思源笔记社区集市上架, 可直接在集市中安装

参考 & 感谢

作者项目许可证
leolee9086leolee9086/cc-baselibUnknown